﻿// <copyright file="Nomination.cs" company="Microsoft Corporation">
// Copyright (c) 2009 Microsoft Corporation All Rights Reserved
// </copyright>
// <author>Michael S. Scherotter</author>
// <email>mischero@microsoft.com</email>
// <date>2009-12-08</date>
// <summary>Nomination class definition</summary>

namespace NYTimes.Data
{
    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;

    /// <summary>
    /// Nomination Category
    /// </summary>
    public enum NominationCategory
    {
        /// <summary>
        /// The nomination has been received
        /// </summary>
        Received,

        /// <summary>
        /// The nomination has been updated
        /// </summary>
        Updated,

        /// <summary>
        /// The nomination has been confirmed
        /// </summary>
        Confirmed,

        /// <summary>
        /// The nomination has been withdrawn
        /// </summary>
        Withdrawn
    }

    /// <summary>
    /// A Civilian Nomination
    /// </summary>
    public class Nomination
    {
        #region Properties
        /// <summary>
        /// Gets or sets the Nomination Id
        /// </summary>
        public string Id { get; set; }

        /// <summary>
        /// Gets or sets the Nomination relative URI
        /// </summary>
        public Uri Uri { get; set; }

        /// <summary>
        /// Gets or sets the date received
        /// </summary>
        public DateTime DateReceived { get; set; }

        /// <summary>
        /// Gets or sets the description
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// Gets or sets the nominee's home state
        /// </summary>
        public string NomineeState { get; set; }

        /// <summary>
        /// Gets or sets the Committee relative URI
        /// </summary>
        public Uri CommitteeUri { get; set; }

        /// <summary>
        /// Gets or sets the latest action date
        /// </summary>
        public DateTime LatestActionDate { get; set; }

        /// <summary>
        /// Gets or sets the latest action
        /// </summary>
        public string LatestAction { get; set; }

        /// <summary>
        /// Gets or sets the nomination status
        /// </summary>
        public NominationCategory Status { get; set; }
        #endregion

        #region Methods
        /// <summary>
        /// output the properties as a list of name/value pairs
        /// </summary>
        /// <returns> a string of name/value pairs, one per line</returns>
        public override string ToString()
        {
            return Synergist.Utility.GetProperties(this);
        }
        #endregion
    }
}
